---
author: 游钓四方
draft: false
featured: false
category: technology
pubDatetime: 2019-05-19T11:47+08:00
title: (转)我眼中的技术高手
slug: tech-whiz
ogImage: https://cos.lhasa.icu/ArticlePictures/gaoshou.jpg_81
tags:
  - 技术
  - 观点
  
description: 会原生 JavaScript 不代表什么，懂 jQuery、YUI 等才真正好。怎么这么多人有原生主义情结呢？走出那点小天地，海阔天高...
---

import Img from "@/components/Img.astro";

本文转自[玉伯的博客](https://github.com/lifesinger/blog/issues/126)

---

今天发了一条[微博](https://weibo.com/1748374882/zoavsuWAz)：

`会原生 JavaScript 不代表什么，懂 jQuery、YUI 等才真正好。怎么这么多人有原生主义情结呢？走出那点小天地，海阔天高。`

很多人已经猜出，这是为了晚上的文章而发，提前收集大家的想法。这个话题，很早就想谈，肯定会引起口水仗，但有些事不辩不明，不理不清，与其和谐社会，不如辛亥革命。

## 奇怪的现象
平时工作，时不时能听到一些困惑、感慨：

`jQuery 虽好，但只会 jQuery，不会原生 JS 是不被大公司认可的。`
`最近半年对原生 JS 有些生疏，得补一补。`
`得好好看看 ECMAScript 规范，把 JS 语言学透彻。`

和原生情结对应的，是国内程序员特别喜欢研读源码，比如：

`jQuery 源码分析系列`
`YUI 源码分析`
`Backbone 及 Underscore 源码解析`

国内程序员对源码的热衷，可以拿 SeaJS 的数据来看：


<Img src={`${IMAGES}/SeaJS.png`} alt="SeaJS 数据" exif={false} />

fork 数高达 500 多，但 watch 数只有 1000 多，这其实是不正常的。相比而言，RequireJS 的数据正常很多：

<Img src={`${IMAGES}/RequireJS.png`} alt="RequireJS 数据" exif={false} />

简言之，国内与国外相比，有比较明显的两个特点：

1. 对原生 JS 的学习心更强。
2. 对类库、框架的源码更感兴趣。

这两点看起来很好，可是：

1. 研究原生 JS 的优秀文章，大都出自国外程序员。
2. 类库、框架，国人好像一直在研究，鲜有产出。

这肯定跟我们是社会主义国家有关，但我越来越怀疑这一点。

## 语言高手们
真正的语言高手不多，我不是，正在看这篇文章的你，很可能也不是，而且这一辈子可能都和我一样成为不了语言高手。

JavaScript（纯语言，不含 DOM 等）高手，在国内屈指可数。周爱民、白露飞、老赵、winter、月影、hax 等等等等，还有一些非常低调的隐士，这些人读 ECMAScript 规范像磕瓜子一样轻松，甚至能花几个晚上就像 BE 大神一样造出一门新语言来。你我等闲之辈，除了佩服之外，只能去谈恋爱。

工作中，我们需要语言高手吗？肯定的说，需要！可是，我们需要大量语言高手吗？除了特殊岗位，我相信很多公司都不需要！

题外话：目前为人知的 JS 语言高手里，除了周爱民，我最看好白露飞。这是一个有能力也有潜力造就 SuperScript 的人，最佩服的是他有实际行动，虽然方向未必正确。

## 我们的价值在哪
除了重新投胎，我们大部分人这辈子都不大可能有兴趣、有能力、有机缘去成为 BE 大神了。这是个残酷的现实，之所以残酷，只因视野太狭窄。

跳出来，天大地大。妹子多着呢，而且更漂亮。

Douglas Crockford 的 JS 能力很可能不及 winter，但 Douglas 规范并布道了 JSON 格式，天下留名，惠泽全球。

Jeremy Ashkenas 的 JS 能力可能还不如老赵，但 Jeremy 用很裸的代码写就了 Backbone，至少影响了一万人，给各个公司创造的价值总额很可能过千万美刀。

更不用说 Isaac Z. Schlueter，这小伙的 JS 功力很可能还不如我，但 Isaac 打造了 npm 生态圈，而我至今只有精力玩玩 Ant 和 Grunt。

有幸还看过 Google Docs 的前端源码，那代码和 Java 一样中规中矩。但在 RTE 领域，Google Docs 是王者，里面的专利都一堆一堆的……

特别想提及的还有开发 Evernote Clearly 的前端工程师，这小伙子的代码，我眼睁睁看着其从很生涩的 JS 代码，逐步演化成上万行牛逼代码还保持了相当好的可维护性。这份代码就像 Clearly 产品一样奕奕生光。

以及把 jQuery 用得出神入化的 Amazon！前不久那个秒杀国内互联网公司的悬浮菜单，可不是研究原生 JS 能想出来的。

还有 Facebook 的工程师们，Twitter 的工程师们…… 这些故事大家并不陌生。

## 不是总结的总结
不贬低语言高手们，也不反对去研究编译原理、ECMAScript 规范等。作为技术人员，我们需要这种精神。但是，这仅仅是很小很小很小很小很小的一个领域。并且在这个领域里，永远有比你更聪明的人。

具体对 JavaScript 语言来说，会用就好。搞清楚数据类型、作用域、闭包、原型链等基本概念，足矣。再深入进去，对绝大部分人来说，除了能满足下心理上的优越感，对实际工作不会有任何实质性帮助。

语言的本质和互联网一样，只是工具，是剪刀、石头、布。让张小泉去研究怎么做剪刀就好，我们用好剪头，去剪出各种窗花，更有意思。还有一个有趣的事实是，张小泉会造剪头，但剪不好窗花。

跳出很小很小很小很小很小的语言领域之外，天大地大。永远不要妄自菲薄，每个人身上都背负着独特的使命。去努力寻找自己的，不要老盯着别人的，否则就会成为观众。

好像跑题了。前面那个奇怪的现象，还有很多想吐槽的点。比如

1. 源码只是很小很小的一部分。直接读源码往往无法领会类库框架的精髓。不读源码，用心去用，用时间去体味，偶尔针对性看看源码，往往更能掌握一个类库框架的真谛。
对社区的贡献可以有很多很多。你的使用经验、用心的 bug 提交、入乡随俗的 pull request、一个认真的评论等等，这些都比去研究什么狗屁源码更有价值。
2. 一个 Java 高手如果说他会原生 Java，那一定会遭来很多人的围观。我还会谭浩强教我的 C 呢，那几个 if else 还有结构体、指针等谁不会。语言之外的领域知识，才真正造就了高手。对于前端来说，会原生 JS 只能打 20 分，另外 40 分需要你深入使用 CSS、DOM、HTML5 等领域知识，还有 20 分需要你对业务需求、架构设计等有真正的运用，这已经 80 分了，不要太贪心。剩下 20 分，只有两个字：勤奋。

<Img src={`${IMAGES}/figure.jpg`} alt="郭靖和黄蓉数据图片" exif={false} />

题图：我的网名射雕的来历，喜欢郭靖，无底线。

（完）